package logic

import (
	"fmt"
	"go_code/emojidealer/utils"
	"io/ioutil"
	"log"
	"os"
	"strings"
)

//ReadFiles 递归读取文件名
func ReadFiles(dirname string, fileChan chan string) {
	//对该文件夹下的文件进行循环遍历
	fileInfos, err := ioutil.ReadDir(dirname)
	if err != nil {
		log.Fatal(err)
	}
	for _, f := range fileInfos {
		//filename := f.Name()
		//todo 检查文件后缀名，如果不是常见图片格式即跳过
		fileFullname := dirname + "\\" + f.Name() //记录当前文件夹下的文件名
		//将文件名push入channel
		fileChan <- fileFullname

		if f.IsDir() { //判断是否是文件夹 如果是文件夹则继续递归调用
			ReadFiles(fileFullname, fileChan)
		}
	}
}

//ChangeFiles 将emoji去除或替换
func ChangeFiles(dirname string, fileChan chan string) {
	for {
		fileFullname, ok := <-fileChan
		if !ok {
			break
		}
		//精准emoji匹配
		//如果文件名包含如下emoji，则将其文件名更改
		// if strings.Contains(filename, "🐇") {
		// 	os.Rename(fileFullname, dirname+"\\"+strings.Replace(filename, "🐇", "", -1))
		// }

		//表情转换后将“\”特殊符号转化为“+”，个性化使用时可在utils包中修改第33行
		//editedname := utils.RemovebackSlash(utils.UnicodeEmojiCode(filename))
		//editedname := utils.RemovebackSlash(utils.UnicodeEmojiCode(filename))
		fileName := strings.Split(fileFullname, "\\")[1]
		//去除emoji
		if err := os.Rename(fileFullname, dirname+"\\"+utils.RemovebackSlash(utils.UnicodeEmojiCode(fileName))); err != nil {
			fmt.Printf("%s修改失败！\n", fileFullname)
		}
	}
}
